package com.matt.service;

import com.matt.commons.dto.sso.AreaDTO;
import com.matt.commons.dto.sso.StaffDTO;
import com.matt.domain.Children;
import com.matt.domain.nursery.NurserySchedule;
import com.matt.domain.nursery.NurseryScheduleCheck;
import com.matt.domain.nursery.NurseryScheduleTemp;
import com.matt.foundation.query.NurseryScheduleCheckQuery;
import com.matt.foundation.vo.nursery.*;
import org.springframework.data.domain.Page;

import java.util.Date;
import java.util.List;

/**
 * *******************************
 * Created by lch.
 * form com.matt
 * on 2018/11/26
 * *******************************
 */
public interface NurseryScheduleService {

    List<NurseryScheduleListVo> scheduleList(String areaId, String beginDate, String endDate, int filter);

    NurseryScheduleDetailVo scheduleDetail(String classesId, String courseDateStr, String nurseryScheduleId);

    NurserySchedule scheduleAdd(String classesId, String childrenId, String teacherId,  String areaId,String lessonDate, String scheduleJson);

    NurserySchedule scheduleUpdate(String nurseryScheduleId, String areaId,String scheduleJson);

    NurseryScheduleTemp scheduleTempAdd(String areaId, String staffId, String name, String lessonDate, String scheduleJson);

    List<NurseryScheduleTempListVo> loadTemp(String areaId, String staffId);

    boolean deleteScheduleRecord(String id);

    boolean deleteTemp(String id);

    void updateNurseryScheduleRecord(String areaid, Date courseDate, String classesId, String coursePlanClassId);

    List<NurseryClassesVo> scheduleTeacherClassesList(String staffId, String areaId);

    List<NurseryClassesVo> scheduleLeaderClassesList(String areaId);

    NurseryScheduleDetailVo scheduleTeacherDetail(String classesId, String courseDateStr);

    NurseryScheduleDetailVo scheduleTeacherDetail(String classesId, String childrenId, String teacherId, String courseDateStr);

    NurseryScheduleDetailVo scheduleFullChildrenDetail(String childrenId, String courseDateStr);

    int findCountByClassesIdAndTime(String classesId, String beginDate, String endDate);

    NurseryScheduleCheck submitCheck(String areaId, String staffId, String realName, String checkId, String classesId, String beginDate, String endDate);

    NurseryScheduleTemp findByStaffIdAndId(String staffId, String id);

    NurseryScheduleCheck check(String ticket, String checkId, Integer status);

    Page<NurseryScheduleCheckVo> checkPage(NurseryScheduleCheckQuery query);

    NurseryScheduleDetailVo checkDetail(String classesId, String courseDate);

    NurseryScheduleCheck getNurseryScheduleCheck(String classesId, String beginDate, String endDate);

//    WeekNurseryScheduleVo getClassesScheduleList(String checkId, String childId);

    PrintScheduleVo getPrintDaySchedule(StaffDTO staff, AreaDTO area, String nurseryScheduleId);

    PrintWeekScheduleVo getPrintWeekSchedule(AreaDTO area, String checkId, Integer type);

    CheckNurseryScheduleVo checkDetailWeek(AreaDTO area, String checkId);
    
    NurserySchedule nurseryScheduleRecordAdd(String areaId, String classesId, Date lessonDate);
    
    List<InstructionResourceRecordVo> getInstructionRescourceByClassesId(String classesId,String lessonDate,Integer type);
    
    String exportExcel(String areaId, String staffId, String classesId, String courseDateStr);

    List<Children> door2DoorChildren(String areaId, String teacherId, String childrenName);
}
